﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace DoctorReg
{
    public partial class FormConsultas2 : Form
    {
        int consultaAnterior;
        DateTime dataAnterior;
        string pacienteAnterior, medicoAnterior;
        public void Alterar(int consulta, DateTime data, string paciente, string medico)
        {
            buttonAdicionar.Enabled = false;
            buttonAlterar.Enabled = true;
            LimparCampos();
            ColocarDados();
            consultaTextBox.Text = consulta.ToString();
            pacienteComboBox.Text = paciente;
            medicoComboBox.Text = medico;
            dataDateTimePicker.Value = data;
            consultaAnterior = consulta;
            pacienteAnterior = paciente;
            medicoAnterior = medico;
            dataAnterior = data;
        }

        public FormConsultas2()
        {
            InitializeComponent();
        }

        private void consultasBindingNavigatorSaveItem_Click(object sender, EventArgs e)
        {
            this.Validate();
            this.consultasBindingSource.EndEdit();
            this.tableAdapterManager.UpdateAll(this.consultasDataSet);

        }

        private void FormConsultas2_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the 'consultasDataSet.Consultas' table. You can move, or remove it, as needed.
            this.consultasTableAdapter.Fill(this.consultasDataSet.Consultas);

        }

        public void Adicionar()
        {
            buttonAdicionar.Enabled = true;
            buttonAlterar.Enabled = false;
            LimparCampos();
            ColocarDados();
        }
        public void LimparCampos()
        {
            consultaTextBox.DataBindings.Clear();
            //Desativação do campo Consulta (campo sequencial)
            consultaTextBox.Enabled = false;
            dataDateTimePicker.DataBindings.Clear();
            pacienteComboBox.DataBindings.Clear();
            medicoComboBox.DataBindings.Clear();
            consultaTextBox.Text = "";
            dataDateTimePicker.Value = System.DateTime.Now;
            pacienteComboBox.Text = "";
            medicoComboBox.Text = "";
        }
        public void ColocarDados()
        {
            pacienteComboBox.DropDownStyle = ComboBoxStyle.DropDownList;
            medicoComboBox.DropDownStyle = ComboBoxStyle.DropDownList;
            dataDateTimePicker.Format = DateTimePickerFormat.Short;
            ConsultasDataSetTableAdapters.PacientesTableAdapter adapterPacientes = new
            ConsultasDataSetTableAdapters.PacientesTableAdapter();
            ConsultasDataSet.PacientesDataTable tabPacientes = new ConsultasDataSet.PacientesDataTable();
            adapterPacientes.Fill(tabPacientes);
            //Para se obter o nome do paciente em vez do código, recorre-se ao item 1
            foreach (DataRow registo in tabPacientes.Rows)
            {
                pacienteComboBox.Items.Add(registo[1]);
            }
            ConsultasDataSetTableAdapters.MédicosTableAdapter adapterMedicos = new ConsultasDataSetTableAdapters.MédicosTableAdapter();
            ConsultasDataSet.MédicosDataTable tabMedicos = new ConsultasDataSet.MédicosDataTable();
            adapterMedicos.Fill(tabMedicos);
            //Para se obter o nome do médico em vez do código, recorre-se ao item 1
            foreach (DataRow registo in tabMedicos.Rows)
            {
                medicoComboBox.Items.Add(registo[1]);
            }
        }
        public bool ValidarDados()
        {
            if (medicoComboBox.Text == "")
            {
                MessageBox.Show("Erro no nome do médico!", this.Text,
                MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
            }
            else if (pacienteComboBox.Text == "")
            {
                MessageBox.Show("Erro no nome do paciente!", this.Text,
                MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
            }
            else
            {
                return true;
            }
        }

        private void buttonAdicionar_Click(object sender, EventArgs e)
        {
            if (ValidarDados())
            {
                ConsultasDataSetTableAdapters.MédicosTableAdapter
                adapterMedicos = new
                ConsultasDataSetTableAdapters.MédicosTableAdapter();
                ConsultasDataSet.MédicosDataTable tabMedicos = new
                ConsultasDataSet.MédicosDataTable();
                adapterMedicos.Fill(tabMedicos);
                DataRow[] registoMedicos;
                registoMedicos = tabMedicos.Select("nome='" +
                medicoComboBox.Text + "'");
                int medico = (int)registoMedicos[0][0];
                ConsultasDataSetTableAdapters.PacientesTableAdapter
                adapterPacientes = new
                ConsultasDataSetTableAdapters.PacientesTableAdapter();
                ConsultasDataSet.PacientesDataTable tabPacientes = new
                ConsultasDataSet.PacientesDataTable();
                adapterPacientes.Fill(tabPacientes);
                DataRow[] registoPacientes;
                registoPacientes = tabPacientes.Select("nome='" +
                pacienteComboBox.Text + "'");
                int paciente = (int)registoPacientes[0][0];
                ConsultasDataSetTableAdapters.ConsultasTableAdapter
                adapterConsultas = new
                ConsultasDataSetTableAdapters.ConsultasTableAdapter();
                try
                {
                    adapterConsultas.Insert(dataDateTimePicker.Value,
                    paciente, medico);
                    MessageBox.Show("Registo adicionado com sucesso!");
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }

        }

        private void buttonAlterar_Click(object sender, EventArgs e)
        {
            ConsultasDataSetTableAdapters.ConsultasTableAdapter
      adapterConsultas = new
      ConsultasDataSetTableAdapters.ConsultasTableAdapter();
      ConsultasDataSetTableAdapters.MédicosTableAdapter
      adapterMedicos = new
      ConsultasDataSetTableAdapters.MédicosTableAdapter();

      ConsultasDataSet.MédicosDataTable tabMedicos = new
      ConsultasDataSet.MédicosDataTable();
      adapterMedicos.Fill(tabMedicos);
      ConsultasDataSetTableAdapters.PacientesTableAdapter
      adapterPacientes = new
      ConsultasDataSetTableAdapters.PacientesTableAdapter();
      ConsultasDataSet.PacientesDataTable tabPacientes = new
      ConsultasDataSet.PacientesDataTable();
      adapterPacientes.Fill(tabPacientes);
 //Determinar código do médico anterior
      DataRow[] registoMedicos;
      registoMedicos = tabMedicos.Select("nome='" +
      medicoAnterior + "'");
      int medicoAnt = (int) registoMedicos[0][0];
 //Determinar código do paciente anterior
      DataRow[] registoPacientes;
      registoPacientes = tabPacientes.Select("nome='" +
      pacienteAnterior + "'");
      int pacienteAnt = (int) registoPacientes[0][0];
 //Determinar código do médico atual
      registoMedicos = tabMedicos.Select("nome='" +
      medicoComboBox.Text + "'");
      int medico = (int) registoMedicos[0][0];
 //Determinar código do paciente atual
      registoPacientes = tabPacientes.Select("nome='" +
      pacienteComboBox.Text + "'");
      int paciente = (int) registoPacientes[0][0];
      try
      {
         adapterConsultas.Update(dataDateTimePicker.Value,
         paciente, medico, consultaAnterior, dataAnterior,
         pacienteAnt, medicoAnt);
         MessageBox.Show("Registo alterado com sucesso!");
      }
      catch (Exception ex)
      {
         MessageBox.Show(ex.Message);
      }
   
        }

        private void consultaLabel_Click(object sender, EventArgs e)
        {

        }

    }
}
